/**
 策略模式，定义了一系列的算法，将每一种算法封装起来并可以互相替换使用，策略模式
 让算法独立于使用它的客户应用而独立变化。
 
 OO设计原则：
 1.面向接口编程（面向抽象编程）
 2.封装变化
 3.多用组合，少用继承
 
重点：
用interface接口 去选择 策略  

用abstract类  去聚合 接口 和 方法

 */

/**
package com.leo.第五章_面向对象下;

public class U5_L13_接口应用_策略模式 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 
		BaseService isave=new UserService();
		isave.SetSaveType(new FileSave());
		isave.add("user");
	}

}

interface ISave{
	public void save(String data);
}

class FileSave implements ISave{
	public void save(String data) {
		System.out.println(data+"数据已经保存在本地");
	}
}

class NetSave implements ISave{
	public void save(String data) {
		System.out.println(data+"数据已经保存在网络");
	}
}

abstract class BaseService{
	private ISave iSave;
	public void SetSaveType(ISave iSave) {
		this.iSave=iSave;
	}
	public void add(String data) {
		System.out.println("检查数据的完整性，重复性和安全性");
		iSave.save(data);
		System.out.println(data+"已经存储完毕。");
	}
}

class UserService extends BaseService{
	;
}
*/


